package com.sxj.corejava.code04_循环结构;

import java.util.Scanner;

/**
 * @author 石小俊
 * 2024年07月10日 9:04
 * 用户输入一个奇数的数字,在控制台通过星号*打印菱形
 * 输入的数字表示图形的行数
 *       *
 *     * * *
 *   * * * * *
 * * * * * * * *
 *   * * * * *
 *     * * *
 *       *
 */
public class Test14_打印菱形 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个奇数作为菱形行数:");
        int length = sc.nextInt();
        if (length > 0 && length % 2 == 1) {
            // 外层循环控制行数
            // 菱形可以拆分为两部分
            // 上半部分是一个等腰三角形
            // 下半部分是一个倒等腰三角形
            // 打印上半部分,此时将中间一行作为上半部分的内容
            for (int i = 1; i <= length / 2 + 1; i++) {
                // 打印空格
                for (int j = 1; j <= length / 2 + 1 - i; j++) {
                    System.out.print("  ");
                }
                // 打印星号
                for (int j = 1; j <= 2 * i - 1; j++) {
                    System.out.print("* ");
                }
                System.out.println();
            }
            // 再打印下半部分
            for (int i = 1; i <= length / 2; i++) {
                // 先打印空格
                // 由于中间一行作为上半部分的内容
                // 因此,此时的倒等腰三角形每一行多出了一个空格
                for (int j = 1; j <= i; j++) {
                    System.out.print("  ");
                }
                // 再打印星号
                for (int j = 1; j <= 2 * (length / 2 - i) + 1; j++) {
                    System.out.print("* ");
                }
                System.out.println();
            }
        } else {
            System.out.println("您输入的行数不合法,请重新输入!");
        }
    }

}
